% !TEX program = xelatex
% !TEX encoding = utf-8
\subsection{感受野}

\subsubsection{感受野与卷积}

\begin{frame}
\frametitle{感受野}
\begin{defthm}
    感受野（Receptive Field）是指特定 CNN 特征的输入空间中的一个区域.
\end{defthm} \pause
\begin{enumerate}
    \item 对于图像来说，局部的像素在空间上的联系较为紧密，距离较远的像素相关性较弱。\pause
    \item 每个神经元只需要对局部进行感知，然后在高层将这些局部信息组合起来得到全局信息。\pause
    \item[结论] 局部感受野就是指卷积层的神经元只和上一层的 feature map 局部相联系。
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{卷积的计算}
\begin{columns}
    \column{.5\textwidth}
    \begin{figure}[H]
        \includegraphics[width=1.0\columnwidth]{images/rf-conCommon}
    \end{figure}
    
    \column{.5\textwidth}
    卷积核参数如下：
    
    \begin{tabular}[H]{cc}
        \hline
        参数 & 值 \\ \hline
        Kernel Size($k$) & $ 3\times 3 $ \\
        Stride($s$) & $ 2\times 2 $ \\
        Padding($p$) & $ 1\times 1 $ \\ \hline
        \label{符号表}
    \end{tabular}\pause
    
    第一次卷积得到 $ 3\times 3 $ {\color[RGB]{29,142,97} feature map}，第二次卷积得到 $ 2\times 2 $ {\color{orange} feature map}。每次卷积输出 feature map 的数量：
    \[n_{out}=[\frac{n_{in}+2p-k}{s}] + 1\]
    其中 $n_{in},\ n_{out}$ 分别为输入和输出的 feature map 数量。
\end{columns}
\end{frame}

\subsubsection{可视化方法}

\begin{frame}
\frametitle{一般可视化方法}
\begin{columns}
    \column{.5\textwidth}
    \begin{figure}[H]
        \includegraphics[width=1.0\columnwidth]{images/rf-conCommon}
    \end{figure} \pause
    
    \column{.5\textwidth}
    一般可视化 CNN feature map 的方法，feature map 的尺寸随着卷积运算缩小。 \pause
    
    \vspace{\baselineskip}
    
    通过观察 feature map 我们可以知道它包含了多少特征，但是我们很难知道：
    \begin{enumerate}[(i)]
        \item 特征具体在哪里（感受野 center ？）
        \item 那个区域有多大（感受野 size ？）
    \end{enumerate}
\end{columns}
\end{frame}

\begin{frame}
\frametitle{固定 size 的 CNN 可视化}
\begin{columns}
    \column{.5\textwidth}
    \begin{figure}[H]
        \includegraphics[width=1.0\columnwidth]{images/rf-convKeepsize}
    \end{figure} \pause
    
    \column{.5\textwidth}
    {\Large 从中可以总结出三个要点： \pause
    \begin{enumerate}[(a)]
        \item 同一 feature map 当中的 feature 感受野 size 相同，画出虚框代表感受野 \pause
        \item {\color{red} 输出层的 feature 的感受野是卷积核覆盖的输入层的 feature 的感受野的叠加}
    \end{enumerate}}
\end{columns}
\end{frame}

\subsubsection{感受野的计算}

\begin{frame}
\frametitle{参数与初始化}
为了计算每一层的感受野，除了每一维度的特征数量 $n$，还需要一些额外的信息：
{\large \begin{enumerate}
    \item 当前感受野 size：$r$
    \item 相邻特征的距离 jump：$j$
    \item 左上角 feature 的中心坐标：$start$
\end{enumerate}}
第一层为输入层，则有：
\begin{center}
    \begin{tabular}[H]{rcl}
        $n$ & $=$ & $img\_size$ \\
        $r$ & $=$ & $1$ \\
        $j$ & $=$ & $1$ \\
        $start$ & $=$ & $0.5$
    \end{tabular}
\end{center}
\end{frame}

\begin{frame}
\frametitle{递推公式}
输出层计算公式：
\begin{equation}
\centering
n_{out}=[\frac{n_{in}+2p-k}{s}] + 1
\label{计算输出feature map大小}
\end{equation}
\begin{equation}
\centering
j_{out}=j_{in} * s
\label{计算输出特征之间的距离}
\end{equation}
\begin{equation}
\centering
r_{out}=r_{in} +(k - 1)* j_{in}
\label{计算输出感受野大小}
\end{equation}
\begin{equation}
\centering
start_{out}=start_{in} +(\frac{k-1}{2} - p)* j_{in}
\label{计算输出感受野中心}
\end{equation} \pause
\begin{enumerate}
    \item 公式 \ref{计算输出feature map大小} 计算输出特征数量
    \item 公式 \ref{计算输出特征之间的距离} 计算输出特征之间的 jump，
    \item 公式 \ref{计算输出特征之间的距离} 计算输出 feature map 的感受野 size
    \item 公式 \ref{计算输出感受野中心} 计算第一个输出 feature 的感受野 center position
\end{enumerate}
\end{frame}